package cn.net.yugu.doraemon.springweb.config;

import cn.net.yugu.doraemon.springweb.enums.SignAlgorithmType;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.List;
import java.util.Map;

/**
 * @author wanghongli
 * @date 2023/3/21 13:16
 * @description YgWebProperties
 **/
@Data
@ConfigurationProperties(prefix = "yg.web")
public class YgWebProperties {
    /**
     * 跨域是否启用，默认关闭.
     */
    private boolean corsEnable;
    /**
     * 是否启用签名校验.
     */
    private boolean signEnable;
    /**
     * 签名盐值.
     */
    private String signSecret;
    /**
     * 不同渠道的签名盐值.
     */
    private Map<String, String> signTypeSecretMap;
    /**
     * @see SignAlgorithmType
     */
    private String signAlgorithmType = "MD5";
    /**
     * 请求可用毫秒数，默认10分钟.
     */
    private long signExpireMills = 10 * 60 * 1000;
    /**
     * 请求日志排除的路径.
     */
    private List<String> requestLogExcludePathPattern;
    /**
     * 签名排除的路径.
     */
    private List<String> signCheckExcludePathPattern;
    /**
     * 签名包括的路径，为空时包括所有路径.
     */
    private List<String> signCheckIncludePathPattern;
    /**
     * 是否包装 Response Body，默认不开启.
     */
    private boolean responseWrapperEnable = false;
    /**
     * 是否启用访问日志.
     */
    private boolean threadLocalAccessLogEnable;
    /**
     * 是否开启统一异常捕获.
     */
    private boolean unionExceptionWrapperEnable = false;
    /**
     * 统一的错误码.
     */
    private int commonErrorCode = 999;
    /**
     * 是否使用统一错误信息.
     */
    private boolean useCommonErrorMsgEnable;
    /**
     * 统一的错误信息.
     */
    private String commonErrorMsg = "请求失败";
    /**
     * 只支持V3高版本签名的全路径
     */
    private List<String> supportOnlyHighSignTypePath;
}
